A network element can include two different planes that are used to process network traffic: a control plane; and a data plane that includes one or more hardware forwarding engines. The data plane receives, processes, and forwards network traffic using various configuration data (e.g., forwarding, security, quality of service (QoS), and other network traffic processing information). The control plane controls these processing functions of the data plane by configuring the data plane, managing data collected by the data plane, monitoring the data plane, and other management functions. The functions for each of the data and control planes are programmed by a software image, the network element operating system that is stored on the network element.
The data plane includes a data processing pipeline that processes the incoming network data using one or more functionalities of the pipeline. In one embodiment, each of the functionalities can provide a different functionality, such as packet forwarding functionality (routing, switching, or another type of packet forwarding), security functionality (e.g., firewall, network address translation, access control lists, and/or other types of functionalities), QoS, traffic policing, network data re-write, and/or other network traffic processing functionalities. The data processing pipeline is part of hardware and can be an Application-Specific Integrated Circuit (ASIC).
A problem with having a data processing pipeline in hardware is that configuring of the data pipeline processing is performed when the associated hardware for the data processing pipeline is manufactured. Thus, it is impossible to add, delete, modify, or re-order the pipeline functionality with such a fixed ASIC data processing pipeline after the ASIC has been manufactured.